package utils;

import base.BaseApplication;
import android.content.Context;
import android.content.res.Resources;
import android.os.Handler;

/**
 * 工具类
 * @author Anson-pc
 *
 */
public class UIUtils {
	/**
     * 得到上下文
     * @return
     */
    public static Context getContext(){
        return BaseApplication.getmContext();
    }

    /**
     * 得到资源
     */
    public static Resources getResources(){
        return getContext().getResources();
    }

    /**
     * 得到资源文件颜色的值
     */
     public static int getColor(int resId){
    	 return getResources().getColor(resId);
     }
    /**
     * 得到String 中的字符
     */
    public static String getString(int resId){
        return getResources().getString(resId);
    }

    /*-----------  得到String.xml中的字符，带占位符 ----------*/
    public static String getString(int resId,Object... formatArgs){
        return getResources().getString(resId,formatArgs);
    }
    /*--------- end ----------*/
    
    /**
     * 得到String 中的字符数组
     */
    public static String[] getStringArr(int resId){
        return getResources().getStringArray(resId);
    }

    /**
     * 得到应用程序中的包名
     */
    public static String getPackageName(){
        return getContext().getPackageName();
    }
    
    /**
     * 得到主线程的Handler 
     * 
     */
    public static Handler getMainThreadHandler(){
		return BaseApplication.getHandler();
    }
    
    /**
     * 得到主线程的ID
     */
    public static long getMainThreadId(){
    	return BaseApplication.getMainTheadId();
    }
    
    /**
     * 安全的执行一个task
     */
    public static void postTaskSafely(Runnable task){
    	//当前线程== 子线程,通过消息机制执行任务
    	//当前线程== 主线程,直接执行任务
    	int curThreadId = android.os.Process.myTid();
    	
    	long mainThreadId = getMainThreadId();
    	if (curThreadId == mainThreadId) {
			task.run();
		}else{
			getMainThreadHandler().post(task);
		}
    }
    
    /**
     * 像素转换的方法，dip转px
     * @param dip
     * @return
     */
    public static int dip2px(int dip){
    	//得到px和dip的比例关系
    	float density = getResources().getDisplayMetrics().density;
    	//得到的是ppi(屏幕尺寸，屏幕的分辨率);
    	//1.px/dip = density;
    	//2.px/(densityDpi/160) = dp;
    	
    	//float 转int类型需要加上0.5f
    	int px = (int) (dip*density +.5f);
    	return px;
    }
    
    /**
     * 像素转换，px转dip
     * @param dip
     * @return
     */
    public static int px2dip(int px){
    	//得到px和dip的比例关系
    	float density = getResources().getDisplayMetrics().density;
    	//得到的是ppi(屏幕尺寸，屏幕的分辨率);
    	//1.px/dip = density;
    	//2.px/(densityDpi/160) = dp;
    	
    	//float 转int类型需要加上0.5f
    	int dip = (int) (px/density +.5f);
    	return dip;
    }
}
